REST Configuration API and REST Status API Guide¶
The RX1 has a REST configuration API for configuration and control of services and a REST status API for monitoring the state of running services.
REST Configuration API¶
The content processing configuration manager is a software based service that stores configurations of content processing services.
This documentation aims at describing the public API provided by this configuration manager for creation, edition and removal of such configurations. The available HTTP requests / response are synthetised in the System section, whereas the structures of the data exchanged through these requests / responses are described in the Configuration Resources section. / responses.
System¶
Service¶
Get a service¶
Returns a service.
-
GET/api/services/(string: service_type)/(string: service_id)¶ Returns a Service resources.
New in version 1.0.
Response Headers: - Content-Type – application/json
Parameters: - service_type (string) – Type of the service (has to respect Service Type format)
- service_id (string) – Service identifier (has to respect Service ID format)
Status Codes: - 200 OK – Ok
- 404 Not Found – Service does not exist
Example request
GET /api/services/content_processing/SERVICE-1 HTTP/1.1
Example response
HTTP/1.1 200 OK Content-Type: application/json { "serviceId":"8b586bc2832c11e79dcf0800271e2a18", "serviceType":"catalog", "serviceName":"SERVICE-1", "state": "stopped", "stateModifiedAt": "2015-03-03T12:30:00", "assignedServers": [ {"serverId": "server1", "status": {"state": "stopped", "lastModified": "2015-03-03T12:30:05"}}, {"serverId": "server2", "status": {"state": "stopped", "lastModified": "2015-03-03T12:30:05"}} ] }
Start a service¶
Start a service
-
POST/api/services/(string: service_type)/(string: service_id)/start¶ Requests the service to be started/running, as soon as possible, on each assigned server.
A notification of type ‘ntf.services.statuschanged’ is sent to RabbitMQ server on exchange ‘mfvp.services’.
New in version 1.0.
Response Headers: - Content-Type – application/json
Parameters: - service_type (string) – Type of the service (has to respect Service Type format)
- service_id (string) – Service identifier (has to respect Service ID format)
Status Codes: - 200 OK – Ok
- 404 Not Found – Service does not exist
- 403 Forbidden – Database is locked
Example request
POST /api/services/content_processing/SERVICE-1/start HTTP/1.1
Example response
HTTP/1.1 200 OK
Stop a service¶
Stop a service
-
POST/api/services/(string: service_type)/(string: service_id)/stop¶ Requests the service to be stopped, as soon as possible, on each assigned server.
A notification of type ‘ntf.services.statuschanged’ is sent to RabbitMQ server on exchange ‘mfvp.services’.
New in version 1.0.
Response Headers: - Content-Type – application/json
Parameters: - service_type (string) – Type of the service (has to respect Service Type format)
- service_id (string) – Service identifier (has to respect Service ID format)
Status Codes: - 200 OK – Ok
- 404 Not Found – Service does not exist
Example request
POST /api/services/content_processing/SERVICE-1/stop HTTP/1.1
Example response
HTTP/1.1 200 OK
Get full list of services¶
Returns full list of services.
-
GET/api/services¶ Returns the list of Service resources.
New in version 1.0.
Response Headers: - Content-Type – application/json
- X-Total-Count – Total number of services
Status Codes: - 200 OK – Ok
Example request
GET /api/services HTTP/1.1
Example response
HTTP/1.1 200 OK Content-Type: application/json X-Total-Count: 2 [ { "serviceId":"8b586bc2832c11e79dcf0800271e2a18", "serviceType":"catalog", "serviceName":"SERVICE-1", "state": "stopped", "stateModifiedAt": "2015-03-03T12:30:00", "assignedServers": [] }, { "serviceId":"8b586bc2832c11e79dcf0800271e2a19", "serviceType":"mux", "serviceName":"SERVICE-2", "state": "stopped", "stateModifiedAt": "2015-03-03T12:30:00", "assignedServers": [ {"serverId": "server1", "status": {"state": "stopped", "lastModified": "2015-03-03T12:30:05"}}, {"serverId": "server2", "status": {"state": "stopped", "lastModified": "2015-03-03T12:30:05"}} ] } ]
Get list of services by type of service¶
Returns list of services for one type
-
GET/api/services/(string: service_type)¶ Returns a list of Service resources.
New in version 1.0.
Response Headers: - Content-Type – application/json
- X-Total-Count – Total number of services returned
Parameters: - service_type (string) – Type of the service (has to respect Service Type format)
Status Codes: - 200 OK – Ok
- 404 Not Found – Service Type does not exist
Example request
GET /api/services/content_processing HTTP/1.1
Example response
HTTP/1.1 200 OK Content-Type: application/json X-Total-Count: 2 [ { "serviceId":"8b586bc2832c11e79dcf0800271e2a18", "serviceType":"mux", "serviceName":"SERVICE-1", "state": "stopped", "stateModifiedAt": "2015-03-03T12:30:00", "assignedServers": [] }, { "serviceId":"8b586bc2832c11e79dcf0800271e2a19", "serviceType":"mux", "serviceName":"SERVICE-2", "state": "stopped", "stateModifiedAt": "2015-03-03T12:30:00", "assignedServers": [] } ]
Export a service configuration¶
-
GET/api/services/(string: service_type)/(string: service_id)/config¶ Download a JSON representation of the specified service along with it’s config
New in version 1.21.
Request Headers: - Content-Type – application/json
Status Codes: - 200 OK – Success
- 404 Not Found – Couldn’t get config data
Example request
GET /api/services/content_processing/test_service/config HTTP/1.1 Content-Type: application/json
Example Response
HTTP/1.1 200 OK Content-Disposition: attachment; filename=live_encoding_service_0_config.json Content-Length: 1234 live_encoding_test_service_20161117.json { "service_id": "test_service", "service_type": "content_processing", "model_version": "1" "config": [...] }
Import a service configuration¶
-
POST/api/services/config¶ Upload a JSON representation of the specified service config and import that service into the database. If the service already exists an attempt will be made to delete it - although this is not gauranteed to be successful. If a service exists but cannot be deleted then the request will respond with error code 409 - Conflict.
New in version 1.3.
Request Headers: - Content-Type – application/json
Status Codes: - 201 Created – Imported
- 400 Bad Request – Invalid JSON
- 409 Conflict – Service ID conflicts with an existing service
Example request
POST /api/services/config HTTP/1.1 Content-Type: application/json { "service_id": "test_service", "service_type": "content_processing", "model_version": "1" "config": [...] }
Assign servers to a service¶
-
PUT/api/assign/services/(string: service_type)/(string: service_id)/servers¶ Update servers list, for a specific service
New in version 1.0.
Request Headers: - Content-Type – application/json
Parameters: - service_type (string) – Type of the service (has to respect Service Type format)
- service_id (string) – Service identifier (has to respect Service ID format)
Status Codes: - 200 OK – Updated
- 400 Bad Request – Payload is invalid
- 404 Not Found – Service does not exist
- 409 Conflict – The servers are currently being backed up.
Example request
PUT /api/assign/services/content_processing/service1/servers HTTP/1.1 Content-Type: application/json [ {"serverId": "server0", "variant" : {"subset": "UHD", "redundancy" : "primary"}}, {"serverId": "server1", "variant" : {"subset": "UHD", "redundancy" : "secondary"}}, {"serverId": "server2", "variant" : {"subset": "HD"}} {"serverId": "server3"}, {"serverId": "server4"} ] Variant: the name of a parameter that can alter the way that a configuration is processed (e.g. only a subset of the configuration is processed) (e.g. �subset�, �redundancy�)
Example Response
HTTP/1.1 409 CONFLICT { 'status': '409 Conflict', 'message': 'Sorry, the server(s) can't be selected because currently involved in a failover process, or reserved for failover/revert usage only. Please select different server(s).', 'details': { 'serverIds': ['SERVER-1', 'SERVER-2'] } }
Remove servers from a service¶
-
DELETE/api/assign/services/(string: service_type)/(string: service_id)/servers¶ Remove servers list, for a specific service
New in version 1.0.
Parameters: - service_type (string) – Type of the service (has to respect Service Type format)
- service_id (string) – Service identifier (has to respect Service ID format)
Status Codes: - 204 No Content – Deleted
- 404 Not Found – Service does not exist
Example request
DELETE /api/assign/services/content_processing/service1/servers HTTP/1.1
Example response
HTTP/1.1 204 OK
Assign one server to a service¶
-
PUT/api/assign/services/(string: service_type)/(string: service_id)/servers/(string: server_id)¶ Add a server to a specific service
New in version 1.0.
Parameters: - service_type (string) – Type of the service (has to respect Service Type format)
- service_id (string) – Service identifier (has to respect Service ID format)
- server_id (string) – Server identifier
Status Codes: - 200 OK – Updated
- 404 Not Found – Service does not exist or Server does not exist
- 409 Conflict – Server does not support the service type
- 409 Conflict – Sorry, the server {server_id} can’t be selected because it is currently involved in a failover process, or reserved for failover/revert usage only. Please select a different server.
- 400 Bad Request – Payload is invalid
Example request
PUT /api/assign/services/content_processing/service1/servers/server1 HTTP/1.1 Optional data to use for the server Content-Type: application/json {"variant" : {"subset": "UHD", "redundancy" : "primary"}}
Example response
HTTP/1.1 200 OK
To force assignation of server to specific service without check that the server is involved in failover process, we can use current request: .. sourcecode:: http
PUT /api/assign/services/content_processing/service1/servers/server1 HTTP/1.1
Content-Type: application/json { “failover”: True, }
Example response
HTTP/1.1 200 OK
Remove one server from a service¶
-
DELETE/api/assign/services/(string: service_type)/(string: service_id)/servers/(string: server_id)¶ Remove one server from a specific service
New in version 1.0.
Parameters: - service_type (string) – Type of the service (has to respect Service Type format)
- service_id (string) – Service identifier (has to respect Service ID format)
- server_id (string) – Server identifier
Status Codes: - 204 No Content – Deleted
- 404 Not Found – Service does not exist or Server is not assigned to Service
Example request
DELETE /api/assign/services/content_processing/service1/servers/server1 HTTP/1.1
Example response
HTTP/1.1 204 OK
Configuration API¶
General information¶
API versioning¶
For each response, the API version number is returned within the X-Api-Version header.
This header is omitted in the following response example to focus on request specificities.
Encoding¶
For the requests that provide information through their body, the request body SHOULD use UTF-8 encoding.
Responses that provide information through their body use UTF-8 encoding.
Warning
Using non UTF-8 encoding may lead to unexpected results.
Global error management¶
If the requested URL does not exists, the response will provide a 404 Not Found status code.
If the requested URL does not match the requested HTTP method, the response will provide a 405 Method Not Allowed status code.
For the requests that provide information through their body, the request body is limited 102400 bytes. Otherwise, the response will provide a 413 Request Entity Too Large status code.
The response body MAY contain more detailed information about the error and is formatted as follow:
HTTP/1.1 400 Bad Request
Content-Type: application/vnd.ericsson+json; version=1.21
{
"error" :
{
"message": "Bad Request",
"code" : 400
}
}
API description¶
Create a configuration¶
- There are two ways for creating a configuration:
- use POST without identifier in body for internally generated identifier
- use POST with identifier in body for client side generated identifier
-
POST/api/services/content_processings¶ Creates a content processor configuration.
New in version 1.21.
Request Headers: - Content-Type – application/vnd.ericsson+json; version=x
- version – mandatory, specify the format version of the configuration
Response Headers: - Content-Type – application/json
- Content-Type – application/vnd.ericsson+json; version=x
Status Codes: - 201 Created – Created
- 400 Bad Request – configuration is not valid
- 409 Conflict – ID is already used by another configuration
- 415 Unsupported Media Type – Unsupported media type (the API cannot handle the configuration passed in the request due to the format version or schema name)
Example request
POST /api/services/content_processings HTTP/1.1 Content-Type: application/vnd.ericsson+json; version=1.21 { See Resources link below }
Example response
HTTP/1.1 201 OK Content-Type: application/vnd.ericsson+json; version=1.21 X-Api-Version: 2.1 {"id": "config_3"}
Get a given configuration¶
-
GET/api/services/content_processing/(string: id)/config¶ Exposes a Configuration Resources.
New in version 1.21.
Parameters: - id (string) – configuration identifier (has to respect Unique ID format)
Response Headers: - Accept – application/vnd.ericsson+json; version=1.21
Status Codes: - 200 OK – Ok
- 404 Not Found – configuration does not exist
- 406 Not Acceptable – The API cannot provide the configuration requested (GET) due to the format version or schema name (specified with the Accept header)
Example request
GET /api/services/content_processing/2b16afcf125143a98e79f790b44eefdb/config HTTP/1.1
Example response
HTTP/1.1 200 OK Content-Type: application/vnd.ericsson+json; version=1.21 X-Api-Version: 2.1 { See Resources link below }
Warning
Conditional GET is not yet supported !
Get all configurations¶
-
GET/api/services/content_processings¶ Returns the list of Configuration Resources pointers.
New in version 1.21.
Response Headers: - Content-Type – application/vnd.ericsson+json
- X-Total-Count – Total number of configurations.
Status Codes: - 200 OK – Ok
Example request
GET /api/services/content_processings HTTP/1.1
Example response
HTTP/1.1 200 OK Content-Type: application/vnd.ericsson+json; version=1.21 X-Api-Version: 2.1 X-Total-Count: 2 [ {"id": "config_1"}, {"id":"config_2"} ]
Example request with all fields
GET /api/services/content_processings?fields=* HTTP/1.1
Example response
HTTP/1.1 200 OK Content-Type: application/vnd.ericsson+json; version=1.21 X-Api-Version: 2.1 X-Total-Count: 2 [ {"id": "config_1", See Resources link below }, {"id":"config_2", See Resources link below } ]
Delete a given configuration¶
-
DELETE/api/services/content_processings/(string: id)¶ Deletes an existing configuration.
New in version 1.21.
Parameters: - id (string) – configuration identifier (has to respect Unique ID format)
Status Codes: - 204 No Content – Deleted
- 404 Not Found – configuration does not exist
Example request
DELETE /api/services/content_processings/config HTTP/1.1
Example response
HTTP/1.1 204 OK
Update a configuration¶
-
PUT/api/services/content_processings/(string: id)¶ Updates a existing live encoding configuration of the given ID.
Warning
The given ID in the URL must match the configuration internal ID (res-configs) otherwise responding with a :statuscode 400.
New in version 1.21.
Request Headers: - Content-Type – application/; version=1.21
- version – mandatory, specify the format version of the configuration
Response Headers: - Content-Type – application/vnd.ericsson+json; version=1.21
Status Codes: - 204 No Content – Updated
- 400 Bad Request – configuration is not valid
- 404 Not Found – configuration does not exist
- 415 Unsupported Media Type – Unsupported media type (the API cannot handle the configuration passed in the request due to the format version or schema name)
Example request
PUT /api/services/content_processings/Config_1 HTTP/1.1 Content-Type: application/vnd.ericsson+json; version=1.21 { See Resources link below }
Example response
HTTP/1.1 204 OK
Configuration Resources¶
Element type definition¶
Each resource has fields, and each field has a specific type. Some types are very basic type, like “Integer”, or “Float”, or even “String”. But others require more description.
An “IntegerString” is a JSON string value representing an integer, e.g. “100”. A “FloatString” is a JSON string value presenting a floating point number, e.g. “-5.1”.
In this section one can find descriptions of specific types used in this documentation.
To comply with this documentation, a client MUST NOT use undefined or undocumented type in this documentation, in particular when using request that will eventually change the related resource’s state.
A client SHOULD ignore undefined or undocumented type in this documentation used in a server’s response.
Overall type¶
Service Type¶
Service Type can be one of the followings:
- mux
- live_packaging
- live_encoding
- od_encoding
- catalog
- od_packaging
- stream_processing_c2
- live_encoding_c2
- monitored_generic_workflow_c2
- content_processing
- stream_personalization
- log_manager
- pois
- pois_import
- muconv
Service¶
<service> element¶
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| serviceId | 1 | 1.21 | String | Service ID | Identifier of the service |
| serviceType | 1 | 1.21 | String | Service Type | Type of the service |
| serviceName | 1 | 1.21 | String | Name of the service | |
| state | 1 | 1.21 | String | ‘started’ or ‘stopped’ | Service state command |
| stateModifiedAt | 1 | 1.21 | Datetime | UTC format | timestamp of last state value change |
| assignedServers | 1 | 1.21 | List | List of assigned servers | |
| assignedServers.serverId | 1 | 1.21 | String | Identifier of an assigned server | |
| assignedServers.status | 1 | 1.21 | Dict | Real status for an assigned server (readonly) | |
| assignedServers.status.state | 1 | 1.21 | String | ‘started’ or ‘stopped’ | Real state for an assigned server (readonly) |
| assignedServers.status.lastModified | 1 | 1.21 | Datetime | UTC format | Last modification of state server (readonly) |
Example in JSON
Accept: application/json
Content-Type: application/json
{
"serviceId":"8b586bc2832c11e79dcf0800271e2a18",
"serviceType":"catalog",
"serviceName":"SERVICE-1",
"state:" "started",
"stateModifiedAt": "2015-03-03T12:30:00",
"assignedServers": [
{
"serverId": "SERVER-1",
"status":
{
"state": "started",
"lastModified": "2015-03-03T12:30:05"
}
},
{
"serverId": "SERVER-2",
"status":
{
"state": "stopped",
"lastModified": "2015-02-03T15:35:05"
}
}
]
}
Note
The field assignedServers.status is read-only.
Content processing config¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| id | 1 | 1.21 | String | Unique ID | Yes | Configuration identifier |
| name | 1 | 1.21 | String | Yes | Service name | |
| resourceType | 1 | 1.32 | Object | HD/SD / UHD / NODECODE | Yes | Set if the box is used as single service UHD decode or as a quad HD/SD multi channel decoder or to pass through transport stream from the input to an IP output. |
| inputs | 1 | 1.21 | Array | 0..n Input objects (Current version restriction: 0..1 input) | Yes | List of inputs |
| processings | 1 | 1.21 | Array | 0..n Processing objects (Current version has no processing types and is used to link input objects to output objects) | Yes | List of processings |
| outputs | 1 | 1.21 | Array | 0..n Output objects | Yes | List of outputs |
Example
"config": {
"id": "ReceiverService",
"name": "Config_1",
"resourceType": "UHD",
"inputs": [{"some": "input_object"}],
"processings": [],
"outputs": [{"some": "output_object"}]
}
Input¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| id | 1 | 1.21 | String | Unique ID | Yes | Input identifier |
| sources | 1 | 1.21 | Array | 1..n Source objects (Current version restriction: only 2 sources can be defined, the first one is the primary, the second one is the secondary) | Yes | List of sources |
| sources[j] | 1 | 1.21 | Object | Source | Yes | Source object (Either IP or ASI or Satellite) |
| See Element for input of type “inputSource” | ||||||
| redundancy | 1 | 1.21 | None | Yes | Input redundancy setup | |
| See Element for input of type “inputRedundancy” |
Element for input of type “inputRedundancy”¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| redundancy.mode | 1 | 1.32 | String | “none” / “activePassive” / “activeActive” / “activeActiveSwitchOnFail” | Yes | Sets the input redundancy configuration. “activeActiveSwitchOnFail” added in v1.52 |
| redundancy.signalLossTimeout | 1 | 1.21 | IntegerString | “0”..”10000” | Yes | Sets the delay in ms between when an input alarm is raised and when the primary source is switched to the secondary input |
Element for input of type “inputSource”¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| sources[j].id | 1 | 1.21 | String | Source identifier | Yes | Identifier for each input source (for example “source_1” and “source_2”) |
| type | 1 | 1.32 | String | “mpeg2tsUdp” or “mpeg2tsAsi” or “mpeg2tsSat” | Yes | Input type |
| See Element for input of type “mpeg2tsUdp” and Element for input of type “mpeg2tsAsi” and Element for input of type “mpeg2tsSat” |
Element for input of type “mpeg2tsUdp”¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| sources[j].ip.address | 1 | 1.21 | String | IP address | Yes | Multicast destination IP address |
| sources[j].ip.port | 1 | 1.21 | IntegerString | “1024”..”65535” | Yes | UDP port |
| sources[j].ip.sourceAddresses | 1 | 1.21 | Array | 0..n Strings | Yes | List of source IP addresses (empty list for no source filtering) |
| sources[j].ip.sourceAddresses[i] | 1 | 1.21 | String | IP address | Yes | Source IP address |
| sources[j].ip.interface | 1 | 1.21 | String of maximum 15 ascii characters | (Current version restriction: this field is mandatory) | Yes | Network interface name as identified in the operating system |
| sources[j].ip.unicast | 1 | 1.21 | Boolean | true / false | Yes | Set input to expect a unicast input |
Element for input of type “mpeg2tsAsi”¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| sources[j].asi.port | 1 | 1.21 | IntegerString | “1”..”4” (Currently only 1 quad card supported) | Yes | Physical ASI input port. |
| sources[j].asi.boardId | 1 | 1.21 | IntegerString | “0”..”3” (Currently only 1 board Id ‘0’ supported) | Yes | Input program selection mode (Current version restriction: all the sources must have the same programSelection value) |
| sources[j].asi.packetSize | 1 | 1.21 | IntegerString | “188” or “204” | Yes | ASI packet size |
Element for input of type “mpeg2tsSat”¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| sources[j].sat.goldCode | 1 | 1.21 | IntegerString | “0”..”262142” | Yes | Code used to identify a signal source when multiple signals are transmitted on the same frequency. |
| sources[j].sat.pilot | 1 | 1.21 | String | “auto” | Yes | Signal used for supervisory, control, equalization, synchronisation or reference (Currently fixed to “auto”) |
| sources[j].sat.is22kHz | 1 | 1.21 | Boolean | true / false | Yes | Used to set the LNB to its high band local oscillator frequency (Default is “false”) |
| sources[j].sat.modulation | 1 | 1.21 | String | “auto” | Yes | Sets the modulation scheme, DVB-S, DVB-S2 or DVB-S2X (Currently fixed to “auto”) |
| sources[j].sat.lnbFrequency | 1 | 1.21 | IntegerString | “0”..”18000000” | Yes | Sets the frequency in kHz of the external LNB being used. |
| sources[j].sat.lnbVoltage | 1 | 1.21 | String | “off” / “13v” / “18v” | Yes | Sets the voltage supplied to the external LNB (default set to “off”) |
| sources[j].sat.frequency | 1 | 1.21 | IntegerString | “0”..”18000000” | Yes | Frequency of the signal to be received in kHz |
| sources[j].sat.cnrAlarmThreshold | 1 | 1.21 | FloatString | “-10”..”50” | Yes | Alarm threshold in dB for the signal to noise ratio of the input signal |
| sources[j].sat.fec | 1 | 1.21 | String | “auto” | Yes | Sets the Forward error correction scheme (Currently fixed to “auto”) |
| sources[j].sat.symbolRate | 1 | 1.21 | IntegerString | “0”..”95000000” | Yes | Symbol rate of the incoming signal in symbols/second |
| sources[j].sat.misFilter | 1 | 1.21 | Boolean | true / false | Yes | Multiple Input Streams allows multiple independent transport streams in one satellite carrier |
| sources[j].sat.rolloff | 1 | 1.21 | String | “auto” | Yes | Digital bandwidth filter applied to the incoming signal (Currently fixed to “auto”) |
| sources[j].sat.source | 1 | 1.21 | IntegerString | “1”..”4” | Yes | Physical RF input port |
| sources[j].sat.misStreamId | 1 | 1.21 | IntegerString | “0”..”255” | Yes | Defines the Input Stream ID (ISI) filter value when the MIS filter is enabled. |
| sources[j].sat.inversion | 1 | 1.21 | String | “auto” | Yes | Sets if the incoming stream has been frequency inverted (Currently fixed to “auto”) |
| sources[j].sat.searchRange | 1 | 1.45 | IntegerString | “2000000”..”10000000” | Yes | Sets the frequency range for the search window size in Hz |
| sources[j].sat.delivery | 1 | 1.21 | String | “auto” | Yes | Determines the modulation standard - DVB-S, DVB-S2 or DVB-S2X (Currently fixed to “auto”) |
Example
"inputs": [
{
"id": "input_1",
"redundancy": {
"signalLossTimeout": "5000",
"mode": "none"
},
"sources": [
{
"id": "source_1",
"type": "mpeg2tsUdp",
"sat": {
"pilot": "auto",
"fec": "auto",
"source": "1",
"lnbFrequency": "10600000",
"frequency": "12760000",
"inversion": "auto",
"cnrAlarmThreshold": "2.0",
"goldCode": "0",
"symbolRate": "27500000",
"is22kHz": false,
"lnbVoltage": "off",
"rollOff": "auto",
"misFilter": false,
"modulation": "auto",
"misStreamId": "255",
"searchRange": "10000000",
"delivery": "auto"
},
"ip": {
"address": "239.100.1.2",
"interface": "eth0",
"unicast": false,
"sourceAddresses": "",
"port": "5000"
},
"asi": {
"port": "1",
"boardId": "0",
"packetSize": "188"
}
},
{
"id": "source_2",
"sat": {
"pilot": "auto",
"fec": "auto",
"source": "1",
"lnbFrequency": "10600000",
"frequency": "12760000",
"inversion": "auto",
"cnrAlarmThreshold": "2.0",
"goldCode": "0",
"symbolRate": "27500000",
"is22kHz": false,
"lnbVoltage": "off",
"rollOff": "auto",
"misFilter": false,
"modulation": "auto",
"misStreamId": "255",
"searchRange": "10000000",
"delivery": "auto"
},
"ip": {
"address": "239.100.1.2",
"interface": "eth0",
"unicast": false,
"sourceAddresses": "",
"port": "5001"
},
"asi": {
"packetSize": "188",
"boardId": "0",
"port": "1"
}
}
],
"programNumber": "0",
"delayMode": "Standard",
"bissMode": "Mode 1",
"bissKey": "",
"bissCa": false,
"autoSelectAudios": false,
"camSlot": "none",
"directorHwId": "none",
"oacEnable": false,
"ca": {
"streams": [
{
"id": "Decrypt_1",
"programNumber": "7750",
"caType": "slot1"
}
]
},
"streams": [
{
"id": "Audio_1",
"type": "audio",
"preprocessing": {
"downmixedChannelsCompressionMode": "line",
"audioOutChannels": "stereo"
},
"source": {
"type": "audio",
"pid": "auto",
"languages": [
"auto"
]
}
},
{
"id": "Video_1",
"type": "video",
"preprocessing": {
"crosstalkFilter": false,
"diamondDenoisingFilter": "off",
"spatialDenoisingFilter": "off"
},
"source": {
"type": "video",
"pid": "auto"
}
},
{
"id": "TS_1",
"type": "mpeg2ts"
}
]
}
],
Input Processing¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| programNumber | 1 | 1.21 | IntegerString | “0”..”65535” | Yes | Sets the program number used in the PMT for the service to be decoded. (Entering 0 will automatically select the first service found) |
| delayMode | 1 | 1.21 | String | Low / Standard / Compatibility / Super Low | Yes | Sets the decode delay of the content processor (“Super Low” added in v1.52) |
| bissMode | 1 | 1.21 | String | “None” / “Mode 1” / “Mode E” | Yes | Sets the BISS v1 decryption mode of operation |
| bissKey | 1 | 1.32 | String | Yes | Sets the key to be used for the BISS v1 or BISS v2 decryption | |
| bissCa | 1 | 1.52 | Boolean | true / false | Yes | Enable BISS-CA |
| camSlot | 1 | 1.21 | String | “slot1”, “slot2” etc or “none” | Yes | Sets which CAM module is used in the Common Interface card. |
| directorHwId | 1 | 1.45 | String | “none” or IntegerString value | Yes | Displays a unique ID used by MediaKind Director. |
| directorEmmMonitoring | 1 | 1.52 | Boolean | true / false | No | For MediaKind use only. |
| oacEnable | 1 | 1.45 | Boolean | true / false | Yes | Sets the RX1 to accept MediaKind Director over air control commands. |
| autoSelectAudios | 1 | 1.21 | Boolean | true / false | Yes | Sets RX1 to automatically decode the first 8 audio found in the PMT and embed them into the SDI output |
| streams | 1 | 1.21 | Array | 1..n Stream objects (Current version supports video, audio and data stream types) | Yes | List of streams |
| See Element for input of type “videoDecode” and Element for input of type “audioDecode” and Element for input of type “dataDecode” |
Element for input of type “videoDecode”¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| streams.id | 1 | 1.21 | String | Unique ID | Yes | Stream identifier |
| streams.type | 1 | 1.21 | String | “video” | Yes | Input type (“video” or “audio” or “private”) |
| streams.source | 1 | 1.21 | Object | Yes | Source settings | |
| streams.source.type | 1 | 1.21 | String | “video” | Yes | Sets the input format to the decoder block |
| streams.source.pid | 1 | 1.32 | String | “1”..”8191” or “auto” | Yes | Sets the packet identifier of the input audio component to be decoded |
| streams.preprocessing | 1 | 1.21 | Object | Yes | Preprocessing options for a video decoder (Settings are currently fixed in this release) | |
| streams.preprocessing.spatialDenoisingFilter | 1 | 1.21 | String | “off” | Yes | Fixed to “off” in the current release |
| streams.preprocessing.diamondDenoisingFilter | 1 | 1.21 | String | “off” | Yes | Fixed to “off” in the current release |
| streams.preprocessing.crosstalkFilter | 1 | 1.21 | Boolean | False | Yes | Fixed to False in the current release |
Element for input of type “audioDecode”¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| streams.id | 1 | 1.21 | String | Unique ID | Yes | Stream identifier |
| streams.type | 1 | 1.21 | String | “audio” | Yes | Input type (“video” or “audio” or “private”) |
| streams.source | 1 | 1.21 | Object | Yes | Source settings | |
| streams.source.type | 1 | 1.21 | Object | “audio” | Yes | Sets the input format to the decoder block |
| streams.source.pid | 1 | 1.21 | String | “1”..”8191” or “auto” | Yes | Sets the packet identifier of the input audio component to be decoded |
| streams.source.languages | 1 | 1.21 | String[] | [ “auto” ] | Yes | Filters the audio input depending on the language set (Fixed to auto in this release). |
| streams.preprocessing | 1 | 1.21 | Object | Yes | Preprocessing options for a audio decoder | |
| streams.preprocessing.audioOutChannels | 1 | 1.21 | String | “stereo” / “5.1” / “16” / “passthrough” | Yes | Sets the audio output format (If stereo is selected for a 5.1 input the output will be down mixed. “16” is required for MPEG-H) |
| streams.preprocessing.downmixedChannelsCompressionMode | 1 | 1.21 | String | “line” | Yes | Sets the Dolby downmix mode (Fixed to “line” in the current release) |
Element for input of type “dataDecode”¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| streams.id | 1 | 1.21 | String | Unique ID | Yes | Stream identifier |
| streams.type | 1 | 1.21 | String | “private” | Yes | Input type (“video” or “audio” or “private”) |
| streams.source | 1 | 1.21 | Object | Yes | Source settings | |
| streams.source.type | 1 | 1.21 | String | “private” | Yes | Sets the input format to the decoder block |
| streams.source.pid | 1 | 1.21 | String | “1”..”8191” or “auto” | Yes | Sets the packet identifier of the input data component to be decoded |
| streams.source.codec | 1 | 1.21 | String | “anc” / “ttxt” | Yes | Sets the expected input format of the data on the incoming stream (Current supported data types are Generic VANC and Teletext) |
Element for input of type “ca”¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| streams.id | 1 | 1.45 | String | Unique ID | Yes | Stream identifier |
| streams.programNumber | 1 | 1.45 | IntegerString | “0”..”65535” | Yes | The number of the program within the TS to be decrypted |
| streams.caType | 1 | 1.45 | String | “slot1”, “slot2”, “slot3”, “slot4”, “biss”, “director” or “bissCa” | Yes | The physical CI slot number where the CAM is located. “bissCa” added in 1.52. |
Example
"inputs": [
{
"id": "input_1",
"type": "mpeg2tsUdp",
"redundancy": {
"signalLossTimeout": "5000",
"mode": "none"
},
"sources": [
{
"id": "source_1",
"sat": {
"pilot": "auto",
"fec": "auto",
"source": "1",
"lnbFrequency": "10600000",
"frequency": "12760000",
"inversion": "auto",
"cnrAlarmThreshold": "2.0",
"goldCode": "0",
"symbolRate": "27500000",
"is22kHz": false,
"lnbVoltage": "off",
"rollOff": "auto",
"misFilter": false,
"modulation": "auto",
"misStreamId": "255",
"searchRange": "10000000",
"delivery": "auto"
},
"ip": {
"address": "239.100.1.2",
"interface": "eth0",
"unicast": false,
"sourceAddresses": "",
"port": "5000"
},
"asi": {
"port": "1",
"boardId": "0",
"packetSize": "188"
}
},
{
"id": "source_2",
"sat": {
"pilot": "auto",
"fec": "auto",
"source": "1",
"lnbFrequency": "10600000",
"frequency": "12760000",
"inversion": "auto",
"cnrAlarmThreshold": "2.0",
"goldCode": "0",
"symbolRate": "27500000",
"is22kHz": false,
"lnbVoltage": "off",
"rollOff": "auto",
"misFilter": false,
"modulation": "auto",
"misStreamId": "255",
"searchRange": "10000000",
"delivery": "auto"
},
"ip": {
"address": "239.100.1.2",
"interface": "eth0",
"unicast": false,
"sourceAddresses": "",
"port": "5001"
},
"asi": {
"packetSize": "188",
"boardId": "0",
"port": "1"
}
}
],
"programNumber": "0",
"delayMode": "Standard",
"bissMode": "Mode 1",
"bissKey": "",
"bissCa": false,
"camSlot": "none",
"autoSelectAudios": false,
"directorHwId": "none",
"oacEnable": false,
"ca": {
"streams": [
{
"id": "Decrypt_1",
"programNumber": "7750",
"caType": "slot1"
}
]
},
"streams": [
{
"id": "Audio_1",
"type": "audio",
"preprocessing": {
"downmixedChannelsCompressionMode": "line",
"audioOutChannels": "stereo"
},
"source": {
"type": "audio",
"pid": "auto",
"languages": [
"auto"
]
}
},
{
"id": "Video_1",
"type": "video",
"preprocessing": {
"crosstalkFilter": false,
"diamondDenoisingFilter": "off",
"spatialDenoisingFilter": "off"
},
"source": {
"type": "video",
"pid": "auto"
}
},
{
"id": "TS_1",
"type": "mpeg2ts"
}
]
}
],
Processing¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| id | 1 | 1.21 | String | Unique ID | Yes | Processing identifier |
| exportType | 1 | 1.21 | String | “sdi” | Yes | Export type |
| streams | 1 | 1.21 | Array | 1..n Stream objects (Current version supports video, audio stream types) | Yes | List of streams |
| streams.id | 1 | 1.21 | String | Unique ID | Yes | Identifier of the source stream being output from the inputProcessing section. |
| streams.input | 1 | 1.21 | String | Unique ID | Yes | Stream identifier |
| streams.type | 1 | 1.21 | String | “video” / “audio” | Yes | Component type |
| streams.codec | 1 | 1.21 | String | “none” | Yes | Fixed to “none” in this release |
Example with statmux
"processings": [
{
"exportType": "sdi",
"id": "processing_1",
"streams": [
{
"input": "Video_1",
"id": "Video_1_dec_1",
"type": "video",
"codec": "none"
},
{
"input": "Audio_1",
"id": "Audio_1_dec_1",
"type": "audio",
"codec": "none"
}
{
"input": "Audio_2",
"id": "Audio_2_dec_1",
"type": "audio",
"codec": "none"
}
]
}
],
Output¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| id | 1 | 1.21 | String | Unique ID | Yes | Output identifier |
| type | 1 | 1.21 | String | “sdiOutput” / “smpte2110Output” / “mpeg2tsUdp” (smpte2110Output added in 1.52) | Yes | Output type |
| enabled | 1 | 1.21 | Boolean | true / false | Yes | Sets if the output is enable or disabled |
| sdi | 1 | 1.21 | None | If type==sdiOutput | SDI output setup | |
| See Element for output of type “sdi” | ||||||
| smpte2110 | 1 | 1.52 | Array | If type==smpte2110Output | SMPTE ST 2110 output setup | |
| See Element for output of type “smpte2110” | ||||||
| mpeg2tsUdp | 1 | 1.21 | None | Yes | Transport stream output setup | |
| See Element for output of type “mpeg2tsUdp” |
Element for output of type “sdi”¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| sdi.boardId | 1 | 1.21 | IntegerString | “0”..”3” | Yes | The id of the output PCIe card (Currently only 1 board is supported in a unit “0”) |
| sdi.port | 1 | 1.21 | IntegerString | “0”..”5” | Yes | The physical port number on the board in use for the service |
| sdi.linkMode | 1 | 1.21 | String | “Quadrant” / “Interleaved” / “12GSDI” (12GSDI added in 1.45) | Yes | UHD quad 3G output link mode |
| sdi.clockReference | 1 | 1.21 | String | “FreeRunning” / “Genlock” / “InputTransportStream” / “RemoteProduction” | Yes | SDI output clock reference. InputTransportStream added in v1.32. RemoteProduction added in v1.45 |
| sdi.externalSyncOffset | 1 | 1.32 | IntegerString | “-4096”..”32767” | Yes | Sets the offset in pixels for the sdi out from the external frame sync |
| sdi.dynamicRangeSignalling | 1 | 1.21 | String | “FollowInput” / “BT709” / “BT2020” / “HLG10” / “PQ10” | Yes | Sets the HDR / SDR signalling in the output SDI |
| sdi.dynamicRangeConversion | 1 | 1.21 | String | “None” / “BT709” | Yes | Sets HDR / SDR output format. Only available on the monitor port. |
| sdi.outputSdi3GLevel | 1 | 1.32 | String | “levelA” / “levelB-DL” | Yes | Sets SDI 3G output format to either Level A or Level B dual link |
| sdi.videoConversion | 1 | 1.45 | String | “noconversion” / “1080i” / “720p” / “1080p” / “sd” | Yes | Sets output video downconversion format for Prime distribution decoder |
| sdi.videoFailMode | 1 | 1.45 | String | “freezeFrame” / “black” / “noOutput” | Yes | Video failure mode. Select SDI output behaviour when video decode fails |
| sdi.smpte2031Line | 1 | 1.21 | String | “7”..”42” or “OFF” | Yes | Sets the line VANC line SMPTE2031 teletext is embedded into. |
| sdi.op47Line | 1 | 1.21 | String | “7”..”42” or “OFF” | Yes | Sets the line VANC line OP-47 teletext is embedded into. |
| sdi.ccLine | 1 | 1.21 | String | “7”..”42” or “OFF” | Yes | Sets the line VANC line closed captions are embedded into. |
| sdi.afdLine | 1 | 1.21 | String | “7”..”42” or “OFF” | Yes | Sets the line VANC line SMPTE2016 AFD is embedded into. |
| sdi.vitcLine | 1 | 1.21 | String | “7”..”42” or “OFF” | Yes | Sets the line VANC line RP-188 is embedded into. |
| sdi.streams | 1 | 1.21 | Array | 1..n steam objects | Yes | List of sdi streams |
| sdi.streams[j].id | 1 | 1.21 | String | Unique ID | Yes | Output identifier |
| sdi.streams[j].input | 1 | 1.21 | String | Unique ID | Yes | Input stream identifier |
| sdi.streams[j].type | 1 | 1.21 | String | “video” / “audio” / “private” | Yes | Output type |
| sdi.streams[j].embedding | 1 | 1.21 | IntegerString | “1”..”8” | If type==audio | Audio embedded channel |
| sdi.smpte2022[j].destPort | 1 | 1.45 | IntegerString | “1024”..”65535” | Yes | Destination UDP port (default: 5000) |
| sdi.smpte2022[j].srcAddress | 1 | 1.45 | String | Unique ID | Yes | Source IP address |
| sdi.smpte2022[j].destAddress | 1 | 1.45 | String | IP address | Yes | Destination IP address |
| sdi.smpte2022[j].srcPort | 1 | 1.45 | IntegerString | “1024”..”65535” | Yes | Source UDP port (default: 5000) |
| sdi.smpte2022[j].enable | 1 | 1.45 | Boolean | true / false | Yes | Enables or disables the output SDI stream |
Element for output of type “smpte2110”¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| smpte2110[i].st211020/st211030/st211040.id | 1 | 1.52 | String | Unique ID | Yes | Identifier of this object |
| smpte2110[i].st211020/st211030/st211040.type | 1 | 1.52 | String | “st211020” / “st211030” / “st211040” | Yes | The type of essences represented by this object |
| smpte2110[i].st211020/st211030/st211040.streams | 1 | 1.52 | Array | 1..n steam objects | Yes | Streams for this object |
| smpte2110[i].st211020/st211030/st211040.streams[j].id | 1 | 1.52 | String | Unique ID | Yes | Output identifier |
| smpte2110[i].st211020/st211030/st211040.streams[j].input | 1 | 1.52 | String | Unique ID | Yes | Input stream identifier |
| smpte2110[i].st211020/st211030/st211040.streams[j].type | 1 | 1.52 | String | “video” / “audio” / “private” | Yes | Output type |
| smpte2110[i].st211020/st211030/st211040.streams[j].essence | 1 | 1.52 | String | Unique ID | Yes | ID of essence that uses this stream |
| smpte2110[i].st211020/st211030/st211040.essences | 1 | 1.52 | Array | 1..n essence objects | Yes | Output essences for this SMPTE ST 2110 output |
| smpte2110[i].st211020/st211030/st211040.essences[j].id | 1 | 1.52 | String | Unique ID | Yes | ID of this essence |
| smpte2110[i].st211020/st211030/st211040.essences[j].enable | 1 | 1.52 | Boolean | true / false | Yes | True to enable this essence |
| smpte2110[i].st211020/st211030/st211040.essences[j].payloadType | 1 | 1.52 | IntegerString | “0”..”255” | Yes | Payload type signalled in this essence |
| smpte2110[i].st211020/st211030/st211040.essences[j].sources | 1 | 1.52 | Array | 1..2 sources | Yes | Output sources (primary and secondary) |
| smpte2110[i].st211020/st211030/st211040.essences[j].sources[k].id | 1 | 1.52 | String | Unique ID | Yes | ID of this essence source |
| smpte2110[i].st211020/st211030/st211040.essences[j].sources[k].ttl | 1 | 1.52 | IntegerString | “0”..”255” | Yes | The time to live of a UDP packet on the network (number of network hops) |
| smpte2110[i].st211020/st211030/st211040.essences[j].sources[k].interface | 1 | 1.52 | String | “eth0”, “eth1”, “eth2” etc. | Yes | The id of the output Ethernet interface port |
| smpte2110[i].st211020/st211030/st211040.essences[j].sources[k].address | 1 | 1.52 | String | IP address | Yes | The destination address of the source |
| smpte2110[i].st211020/st211030/st211040.essences[j].sources[k].port | 1 | 1.52 | IntegerString | “1024”..”65535” | Yes | The destination port of the source |
| smpte2110[i].st211020/st211030/st211040.essences[j].sources[k].sourcePort | 1 | 1.52 | IntegerString | “0” / “1024”..”65535” | Yes | The source port of the source. 0 means auto. |
| smpte2110[i].st211020.dynamicRangeSignalling | 1 | 1.52 | String | “FollowInput” / “BT709” / “BT2020” / “HLG10” / “PQ10” | Yes | Sets the HDR / SDR signalling in the output |
| smpte2110[i].st211020.smpte2110.failureMode | 1 | 1.52 | String | “freezeFrame” / “black” | Yes | What happens to the output when the decoder fails. |
| smpte2110[i].st211040.smpte2110.smpte2031Line | 1 | 1.52 | String | “7”..”42” or “OFF” | Yes | Sets the line VANC line SMPTE2031 teletext is embedded into. |
| smpte2110[i].st211040.smpte2110.op47Line | 1 | 1.52 | String | “7”..”42” or “OFF” | Yes | Sets the line VANC line OP-47 teletext is embedded into. |
| smpte2110[i].st211040.smpte2110.ccLine | 1 | 1.52 | String | “7”..”42” or “OFF” | Yes | Sets the line VANC line closed captions are embedded into. |
| smpte2110[i].st211040.smpte2110.afdLine | 1 | 1.52 | String | “7”..”42” or “OFF” | Yes | Sets the line VANC line SMPTE2016 AFD is embedded into. |
| smpte2110[i].st211040.smpte2110.vitcLine | 1 | 1.52 | String | “7”..”42” or “OFF” | Yes | Sets the line VANC line RP-188 is embedded into. |
Element for output of type “mpeg2tsUdp”¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| mpeg2tsUdp.interface | 1 | 1.21 | String | “eth0”, “eth1”, “eth2” etc. | Yes | The id of the output Ethernet interface port |
| mpeg2tsUdp.ttl | 1 | 1.21 | IntegerString | “0”..”255” | Yes | The time to live of a UDP packet on the network (number of network hops) |
| mpeg2tsUdp.transportStreams | 1 | 1.21 | Array | 1..n transportStreams objects | Yes | List of transportStreams |
| mpeg2tsUdp.transportStreams[j].address | 1 | 1.21 | String | IP address | Yes | Source IP address (default: default source address of network interface from which packets are sent) |
| mpeg2tsUdp.transportStreams[j].port | 1 | 1.21 | IntegerString | “1024”..”65535” | Yes | Source UDP port (default: 5000) |
| mpeg2tsUdp.transportStreams[j].streams[k] | 1 | 1.21 | Array | Yes | List of input transport streams identifiers which will be output | |
| mpeg2tsUdp.transportStreams[j].streams[k].input | 1 | 1.21 | String | Yes | Input transport streams identifiers which will be output |
Example
"outputs": [
{
"id": "sdiOutput_1",
"enabled": true,
"type": "sdiOutput",
"sdi": {
"boardId": "0",
"linkMode": "Quadrant",
"dynamicRangeConversion": "None",
"dynamicRangeSignalling": "FollowInput",
"clockReference": "FreeRunning",
"externalSyncOffset": "0",
"outputSdi3GLevel": "levelA",
"afdLine": "11",
"vitcLine": "9",
"ccLine": "11",
"op47Line": "OFF",
"smpte2031Line": "OFF",
"port": "1",
"videoFailMode": "freezeFrame",
"videoConversion": "noconversion",
"smpte2022": [
{
"destPort": "6001",
"srcAddress": "192.168.0.1",
"destAddress": "235.0.0.1",
"srcPort": "10000",
"enable": true
},
{
"destPort": "6002",
"srcAddress": "192.168.0.1",
"destAddress": "235.0.0.1",
"srcPort": "10000",
"enable": false
}
],
"streams": [
{
"input": "Video_1_enc_1",
"id": "Video_1_out_1",
"type": "video"
},
{
"input": "Audio_1_enc_1",
"id": "Audio_1_out_1",
"type": "audio",
"embedding": "1"
}
],
}
},
{
"id": "smpte2110Output_1",
"type": "smpte2110Output",
"enabled": true,
"smpte2110": [
{
"id": "vid_6c4cf44d440db56b7057ccbd4ada",
"type": "st211020",
"dynamicRangeSignalling": "FollowInput",
"failureMode": "freezeFrame",
"streams": [
{
"id": "str_c92e01a84b718402c8354c287999",
"input": "Video_1_dec_1",
"type": "video",
"essence": "ess_7d20753c4b82826451af5bc12727"
}
],
"essences": [
{
"id": "ess_7d20753c4b82826451af5bc12727",
"enable": true,
"payloadType": "96",
"sources": [
{
"id": "sou_c49b86a24682833531f021731887",
"address": "235.99.99.20",
"port": "5555",
"interface": "eth3",
"sourcePort": "0",
"ttl": "64"
}
]
}
]
},
{
"id": "aud_daa89180489cbe2f0fe33a749daa",
"type": "st211030",
"streams": [
{
"id": "str_d5399db54a45888891f513965bc0",
"input": "Audio_1_dec_1",
"type": "audio",
"essence": "ess_2ecd72284cb0bcf01f7123d683e0"
},
{
"id": "str_51f2369c4c99b51b158b5bb84b66",
"input": "Audio_2_dec_1",
"type": "audio",
"essence": "ess_2ecd72284cb0bcf01f7123d683e0"
}
],
"essences": [
{
"id": "ess_2ecd72284cb0bcf01f7123d683e0",
"enable": true,
"payloadType": "97",
"sources": [
{
"id": "sou_032f46e849d7806bdfeef0bd46a7",
"address": "235.99.99.30",
"port": "5555",
"interface": "eth3",
"sourcePort": "0",
"ttl": "64"
}
]
}
]
},
{
"id": "dat_2edd65444b6eb44ca991019857ff",
"type": "st211040",
"vitcLine": "9",
"afdLine": "11",
"ccLine": "11",
"op47Line": "OFF",
"smpte2031Line": "11",
"streams": [],
"essences": [
{
"id": "ess_7897ed044848b305ede40bda0a6b",
"enable": true,
"payloadType": "100",
"sources": [
{
"id": "sou_6914481b419e975296b6dfeae335",
"address": "235.99.99.40",
"port": "5555",
"interface": "eth3",
"sourcePort": "0",
"ttl": "64"
}
]
}
]
}
]
},
{
"id": "output_2",
"enabled": true,
"type": "mpeg2tsUdp",
"mpeg2tsUdp": {
"interface": "eth1",
"tsPacketsPerUdpPacket": "7",
"ttl": "64",
"transportStreams": [
{
"address": "235.0.0.1",
"port": "5555",
"streams": [
{
"input": "TS_1"
}
]
}
]
}
}
],
REST Status API¶
This section describes the content processing status available via the statistics REST API. The content processing status API is provided through the existing statistics API which is a general API for getting status and statistics from different service types. The status API is comprises of two specific calls to the statistics API. One to read per services status and another to read server status, plus the aggregated status of all running services.
Statistics API¶
The statistics API provides REST API access to status for different processing types. This document describes uses of the statistics API for content processing.
Get Server Status¶
Returns status for a content processing server and all services running on the server. This allows a single request to get both server and service status for all running services.
-
GET/api/statistics/current?serverId=(string: server_id)&type=content_processing_server&id=0¶ Returns a Server Status resource
New in version 1.0.
Response Headers: - Content-Type – application/json
Parameters: - serverId (string) – Server identifier: this should be set to “Receiver1”
- type (string) – Type of the element: use type content_processing_server for server status
- id (string) – Service identifier: this should be set to 0
Status Codes: - 200 OK – Ok
- 204 No Content – The server does not exist
Example request
GET /api/statistics/current?serverId=Receiver1&type=content_processing_server&id=0 HTTP/1.1
Get Service Status¶
Returns status for a specific content_processing service. This is a useful alternative to get status when only a single service status is wanted for a system running multiple services as the response size will be smaller and be specific to the single service requested.
-
GET/api/statistics/current?serverId=(string: server_id)&type=content_processing&id=(string: service_id)¶ Returns a Service Status resource
New in version 1.0.
Response Headers: - Content-Type – application/json
Parameters: - serverId (string) – Server identifier: this should be set to “Receiver1”
- type (string) – Type of the element: use type content_processing for service status
- id (string) – Service identifier: this should be set to the service ID
Status Codes: - 200 OK – Ok
- 204 No Content – The server and service combination does not exist
Example request
GET /api/statistics/current?serverId=Receiver1&type=content_processing&id=6bf53788bb024982aabbbc857d635699 HTTP/1.1
Status Resources¶
The following section describes the status API JSON structure.
Note
Fields are listed with their value type. A field may not have a determined value at the time of polling in which case the invalid data marker value of null is present.
Server Status¶
Server status provides per server information about the hardware capabilities, it also provides a list of status items for services running on the server.
Server¶
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| version | 1 | 1.0 | FloatString | Version of status API | |
| Server ID | 1 | 1.0 | String | Identifier of the server | |
| dateTime | 1 | 1.0 | String | Sample timestamp in UTC | |
| uptimeSec | 1 | 1.0 | Integer | Server uptime in seconds | |
| memSizeGByte | 1 | 1.0 | Integer | 8 or 16 | Server memory size in gigabytes (8GB or 16GB) |
| diskSizeGByte | 1 | 1.0 | Integer | 64 or 128 | Server disk size in gigabytes (64GB or 128GB) |
| chassisName | 1 | 1.0 | String | The chassis name eg. “VEGA-7010” | |
| tpm | 1 | 1.0 | Boolean | True if trusted platform module fitted and initialized | |
| sdiPorts | 1 | 1.0 | Array | List of SDI ports, the type and service usage | |
| sdiPorts[j].name | 1 | 1.0 | String | Name of the SDI port “Port n” for n 0…number of ports-1 | |
| sdiPorts[j].type | 1 | 1.0 | String | Port type “3G”, “12G”, “2022-6” | |
| sdiPorts[j].serviceName | 1 | 1.0 | String | Name of service using the SDI port or null | |
| acceleratorCardOutputSFPs | 1 | 1.0 | Array | Present only if “Mediakind Accelerator” option card is fitted | Array up to 2 SFP modules detected in accelerator card |
| pcieSlots | 1 | 1.0 | Array | Slot index 0…3 | Array of option slot information |
| pcieSlots[j] | 1 | 1.0 | Object | PCIe Slot Information | Attributes of PCIE option card detected or null if no option card detected |
| clockStatus | 1 | 1.0 | Object | Clock Status | Information about the unit’s system clock |
| services | 1 | 1.0 | Array | Array of services | |
| services[j] | 1 | 1.0 | Object | Service Status | Service object |
Example in JSON
Accept: application/json
Content-Type: application/json
{
"version": "1.0",
"id": "Receiver1",
"dateTime":"2021-10-04 10:47:15 UTC"
"uptime": 522508,
"memSizeGByte": 8,
"diskSizeGByte": 64,
"productName": "VEGA-7010",
"tpm": true,
"sdiPorts": [{
"name": "Port 0",
"type": "3G",
"serviceName": null
}, {
"name": "Port 1",
"type": "3G",
"serviceName": null
}, {
"name": "Port 2",
"type": "3G",
"serviceName": null
}, {
"name": "Port 3",
"type": "3G",
"serviceName": "NewService"
},{
"name": "Port 4",
"type": "3G",
"serviceName": null
}],
"pcieSlots": [
{"description": "PCIe 4 Satellite Demod", "marketingCode": "MKP/HWO/PCI/SAT/DEMOD", "partNumber": "S16834", "thirdPartyPartNumber": "Digital Devices 820148"},
{"description": "PCIe Accelerator - Enhanced", "marketingCode": "MKP/HWO/PCI/ACC/ENH", "partNumber": "S16810", "thirdPartyPartNumber": null},
{"description": "PCIe 2 CI Slots", "marketingCode": "MKP/HWO/PCI/CI/DUAL", "partNumber": "S16837", "thirdPartyPartNumber": "Digital Devices 092123"},
null
],
"acceleratorCardOutputSFPs": ["3G", "3G"],
"services": [{"some": "service-status"}]
}
Service Status¶
Service element¶
The service status element shows status for running and blocked services. The interface provides different contents for blocked and non-blocked services. Both forms are given below.
For a non-blocked service
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| version | 1 | 1.0 | FloatString | the version of the status API | |
| id | 1 | 1.0 | String | Service ID | identifier of the service |
| name | 1 | 1.0 | String | Name of the service | |
| dateTime | 1 | 1.0 | String | Sample timestamp in UTC | |
| uptimeSec | 1 | 1.0 | Integer | Service uptime in seconds | |
| inputs | 1 | 1.0 | Object | Input | Service input object |
| processings | 1 | 1.0 | Object | Processing | Service processing object |
| outputs | 1 | 1.0 | Array | SDI Output or Passthrough Output or SMPTE ST 2110 output | List of service output objects |
| runningState | 1 | 1.0 | String | “started” | String indicating the service run state |
Example in JSON
Accept: application/json
Content-Type: application/json
{
"version": "1.0",
"id": "6bf53788bb024982aabbbc857d635699",
"name": "Sport",
"dateTime": "2021-09-30 07:58:38 UTC",
"uptimeSec": 2314,
"runningState": "started",
"inputs": {"some": "input-status"},
"processings": {"some": "processing-status"},
"outputs": [{"some": "output-status"}]
}
For a blocked service.
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| version | 1 | 1.0 | FloatString | the version of the status API | |
| id | 1 | 1.0 | String | Service ID | identifier of the service |
| dateTime | 1 | 1.0 | String | Sample timestamp in UTC | |
| uptimeSec | 1 | 1.0 | Integer | 0 | Service uptime in seconds is shows as 0 |
| runningState | 1 | 1.0 | String | “start blocked: awaiting resource” | String indicating the service run state |
| blockedReason | 1 | 1.0 | String | A text string with showing reason(s) for the service being blocked |
Example of blocked service in JSON
Accept: application/json
Content-Type: application/json
{
"version": "1.0",
"id": "fb3c2cc46efe4b1d8b82d435e148cf4b",
"dateTime": "2021-09-30 07:58:38 UTC",
"uptimeSec": 0
"runningState": "start blocked: awaiting resource",
"blockedReason": "Decoder supports a maximum of 1 UHD or 4 SD/HD instances"
}
Input¶
| Element name | Cardinality | Version added | Types | Constraint | Description |
|---|---|---|---|---|---|
| id | 1 | 1.0 | String | Unique ID | Input identifier |
| activeSourceIndex | 1 | 1.0 | Integer | 0..1 | The source index of the active input. 0 denotes the primary input, 1 denotes the secondary input. |
| networkId | 1 | 1.0 | Integer | 0..65535 | The NIT network ID |
| originalNetworkId | 1 | 1.0 | Integer | 0..65535 | The SDT original network ID |
| transportStreamId | 1 | 1.0 | Integer | 0..65535 | The PAT transport stream ID |
| mptsPrograms | 1 | 1.0 | Array | Array of program information | |
| mptsPrograms[j] | 1 | 1.0 | Object | MPTS Program | Program information |
| sources | 1 | 1.0 | Array | 1..n Source objects (Current version restriction: only 2 sources can be defined, the first one is the primary, the second one is the secondary) | Array of sources |
| sources[j] | 1 | 1.0 | Object | Source IP or Source Satellite or Source ASI | Source object (Either IP, Satellite or ASI) |
Example in JSON
Accept: application/json
Content-Type: application/json
"inputs": {
"activeSourceIndex": 0,
"sources": [
{
"type": "ip",
"receiving": true,
"bitRate": 44524917,
"ccError": 843,
"pidError": 2525,
"pmtError": 0,
"syncByteError": 0,
"transportError": 4610,
"tsSyncLoss": 0
},
{
"type": "ip",
"receiving": false,
"bitRate": 0
}
],
"networkId": 32,
"originalNetworkId": 2,
"transportStreamId": 2050,
"mptsPrograms": [{"some": "mptsProgramObject"}]
},
MPTS Program¶
Status information for program extracted from the PSI/SI. Both TS passthrough and decode services provide this status but decode services provides more fields than TS passthrough services. This is indicated in the constraint column.
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| programNumber | 1 | 1.0 | Integer | 0..65535 | The PAT/PMT program number |
| serviceName | 1 | 1.0 | String | Service name from SDT or VCT | |
| providerName | 1 | 1.0 | String | Provider name from SDT or VCT | |
| majorChannel | 1 | 1.0 | Integer | Present only for decode service | The VCT major channel number. (This value is zero if the SI is not ATSC) |
| minorChannel | 1 | 1.0 | Integer | Present only for decode service | The VCT minor channel number. (This value is zero if the SI is not ATSC) |
| pcrPid | 1 | 1.0 | Integer | Present only for decode service | PID of the PCR |
| pmtPid | 1 | 1.0 | Integer | Present only for decode service | PID of the PMT |
| elementaryStreams | 1 | 1.0 | String | Present only for decode service | Provider name from SDT or VCT |
| elementaryStreams[j].type | 1 | 1.0 | String | “video”, “audio” or “private”. Present only for decode service | Elementary stream stream type |
| elementaryStreams[j].streamType | 1 | 1.0 | Integer | Present only for decode service | Elementary stream stream type from PMT |
| elementaryStreams[j].descriptorTag | 1 | 1.0 | Integer | 0..255. Present only for decode service | Elementary stream private descriptor tag. (This value is zero if the stream is not a private stream) |
| elementaryStreams[j].pid | 1 | 1.0 | Integer | Present only for decode service | Elementary stream PID |
| elementaryStreams[j].language | 1 | 1.0 | String | Present only for decode service when type is audio | ISO 639 language descriptor. |
Example in JSON
Accept: application/json
Content-Type: application/json
{
"mptsPrograms": [
{
"programNumber": 6961,
"serviceName": "BBC One HD",
"providerName": "BSkyB",
"majorChannel": 0,
"minorChannel": 0,
"pcrPid": 5400,
"pmtPid": 257,
"elementaryStreams": [
{
"descriptorTag": 0,
"pid": 5400,
"streamType": 27,
"type": "video"
},
{
"descriptorTag": 0,
"language": "NAR",
"pid": 5402,
"streamType": 3,
"type": "audio"
},
{
"descriptorTag": 86,
"pid": 5403,
"streamType": 6,
"type": "private"
},
{
"descriptorTag": 106,
"language": "eng",
"pid": 5401,
"streamType": 6,
"type": "audio"
}
]
},
{
"programNumber": 6963,
"serviceName": "BBC One NI HD",
"providerName": "BSkyB",
"majorChannel": 0,
"minorChannel": 0,
"pcrPid": 5300,
"pmtPid": 263,
"elementaryStreams": [
{
"descriptorTag": 0,
"pid": 5300,
"streamType": 27,
"type": "video"
},
{
"descriptorTag": 86,
"pid": 5302,
"streamType": 6,
"type": "private"
},
{
"descriptorTag": 106,
"language": "eng",
"pid": 5301,
"streamType": 6,
"type": "audio"
}
]
}
]
}
Source IP¶
Input source status for IP source
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| type | 1 | 1.0 | String | “ip” | Source type for IP input |
| receiving | 1 | 1.0 | Boolean | Flag indicating if source is receiving a transport stream | |
| bitRate | 1 | 1.0 | Integer | Source bitrate bits per second | |
| ccError | 1 | 1.0 | Integer | Present only for active source | CC error count (ETR 290 priority 1.4) |
| pidError | 1 | 1.0 | Integer | Present only for active source | PID error count (ETR 290 priority 1.6) |
| pmtError | 1 | 1.0 | Integer | Present only for active source | PMT error count (ETR 290 priority 1.5) |
| syncByteError | 1 | 1.0 | Integer | Present only for active source | TS sync byte error count (ETR 290 priority 1.2) |
| transportError | 1 | 1.0 | Integer | Present only for active source | TS transport error count (ETR 290 priority 2.1) |
| tsSyncLoss | 1 | 1.0 | Integer | Present only for active source | TS sync loss count (ETR 290 priority 1.1) |
Source Satellite¶
Input source status for satellite source
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| type | 1 | 1.0 | String | “sat” | Source type for satellite input |
| receiving | 1 | 1.0 | Boolean | Flag indicating if source is receiving a transport stream | |
| bitRate | 1 | 1.0 | Integer | Source bitrate bits per second | |
| ber | 1 | 1.0 | String | Bit error ratio, bitErrorCount / totalBitCount expressed as a scientific notation string eg “6.21e-4”. If the value is less than 1e-7 then ber value is shown as “<1e-7” | |
| cnMargin | 1 | 1.0 | Double | Carrier to noise margin dB | |
| bitErrorCount | 1 | 1.0 | Integer | Bit error count | |
| fecErrors | 1 | 1.0 | Integer | Count of uncorrected FEC blocks | |
| fecRate | 1 | 1.0 | String | Forward error correction rate, eg: “2/3”, “7/8” | |
| inversion | 1 | 1.0 | Boolean | Flag indicating if spectrum is inverted | |
| modulation | 1 | 1.0 | String | Modulation type, eg: “BPSK”, “8PSK” | |
| pilot | 1 | 1.0 | Boolean | Flag indicating if pilot symbols are present | |
| rfLock | 1 | 1.0 | Boolean | Flag indicating RF level lock | |
| rollOff | 1 | 1.0 | String | Roll off factor: “5%”, “10%”, “15%”, “20%”, “25%”, “35%” | |
| signalStrength | 1 | 1.0 | Double | Signal strength in dBm | |
| totalBitCount | 1 | 1.0 | Integer | Total bits received | |
| deliverySystem | 1 | 1.0 | String | Satellite delivery: “DVB-S”, “DVB-S2”, “DVB-SX” or null if undetermined | |
| ccError | 1 | 1.0 | Integer | Present only for active source | CC error count (ETR 290 priority 1.4) |
| pidError | 1 | 1.0 | Integer | Present only for active source | PID error count (ETR 290 priority 1.6) |
| pmtError | 1 | 1.0 | Integer | Present only for active source | PMT error count (ETR 290 priority 1.5) |
| syncByteError | 1 | 1.0 | Integer | Present only for active source | TS sync byte error count (ETR 290 priority 1.2) |
| transportError | 1 | 1.0 | Integer | Present only for active source | TS transport error count (ETR 290 priority 2.1) |
| tsSyncLoss | 1 | 1.0 | Integer | Present only for active source | TS sync loss count (ETR 290 priority 1.1) |
Source ASI¶
Input source status for ASI source
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| type | 1 | 1.0 | String | “asi” | Source type for ASI input |
| receiving | 1 | 1.0 | Boolean | Flag indicating if source is receiving a transport stream | |
| bitRate | 1 | 1.0 | Integer | Present only for active source | Source bitrate bits per second |
| ccError | 1 | 1.0 | Integer | Present only for active source | CC error count (ETR 290 priority 1.4) |
| pidError | 1 | 1.0 | Integer | Present only for active source | PID error count (ETR 290 priority 1.6) |
| pmtError | 1 | 1.0 | Integer | Present only for active source | PMT error count (ETR 290 priority 1.5) |
| syncByteError | 1 | 1.0 | Integer | Present only for active source | TS sync byte error count (ETR 290 priority 1.2) |
| transportError | 1 | 1.0 | Integer | Present only for active source | TS transport error count (ETR 290 priority 2.1) |
| tsSyncLoss | 1 | 1.0 | Integer | Present only for active source | TS sync loss count (ETR 290 priority 1.1) |
Example in JSON
Accept: application/json
Content-Type: application/json
{
"inputs": {
"activeSourceIndex": 0,
"sources": [
{
"type": "ip",
"receiving": true,
"bitRate": 44491328,
"ccError": 9,
"pidError": 0,
"pmtError": 0,
"syncByteError": 0,
"transportError": 0,
"tsSyncLoss": 0
},
{
"type": "ip",
"receiving": false,
"bitRate": 0
}
],
"networkId": 32,
"originalNetworkId": 2,
"transportStreamId": 2050,
"mptsPrograms": [{"some": "mptsProgram"}]
}
Processing¶
| Element name | Cardinality | Version added | Type | Constraint | Mandatory | Description |
|---|---|---|---|---|---|---|
| decode | 1 | 1.0 | String | Decode | Present only for UHD and SD/HD service types | decode status object |
| passThroughServices | 1 | 1.0 | Object | Passthrough Status | Present only for TS passthrough service type | Object with array of pass through status objects |
Decode¶
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| programNumber | 1 | 1.0 | Integer | 0..65535 | program number |
| programAutoSelected | 1 | 1.0 | Boolean | True if program is auto selected as first item on service list | |
| descramblingState | 1 | 1.0 | String | Descrambling State | The descrambling status |
| streams | 1 | 1.0 | Array | List of stream status objects | |
| streams[j] | 1 | 1.0 | Object | Stream element for type audio or Stream element for type video or Stream element for type private | Stream status |
Stream¶
Stream status object contents depend on the stream type.
Stream element for type audio¶
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| type | 1 | 1.0 | String | “audio” | The elementary stream type |
| id | 1 | 1.0 | String | The id tag of the decode stream | |
| pid | 1 | 1.0 | Integer | 0..8191 | The elementary stream PID |
| bitRate | 1 | 1.0 | Integer | The elementary stream rate in bits/sec | |
| language | 1 | 1.0 | String | 3 characters | The ISO 639 language code |
| channelMode | 1 | 1.0 | String | The audio channel mode | |
| samplingRate | 1 | 1.0 | Integer | The audio sample rate in Hz | |
| codec | 1 | 1.0 | String | The audio codec type | |
| channelCount | 1 | 1.0 | Integer | The audio channel count |
Stream element for type video¶
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| type | 1 | 1.0 | String | “video” | The elementary stream type |
| id | 1 | 1.0 | String | The id tag of the decode stream | |
| pid | 1 | 1.0 | Integer | 0..8191 | The elementary stream PID |
| bitRate | 1 | 1.0 | Integer | The elementary stream rate in bits/sec | |
| height | 1 | 1.0 | Integer | The picture height in pixels | |
| width | 1 | 1.0 | Integer | The picture width in pixels | |
| interlaced | 1 | 1.0 | Boolean | Flag indicating if the video is interlaced | |
| frameRateNumerator | 1 | 1.0 | Integer | The numerator of the frame rate expressed in simplest fractional form eg: 30000/1001 for 29.97 Hz | |
| frameRateDenominator | 1 | 1.0 | Integer | The denominator of the frame rate expressed in simplest fractional form eg: 30000/1001 for 29.97 Hz | |
| codec | 1 | 1.0 | String | The video codec | |
| chromaFormat | 1 | 1.0 | String | Chroma Format | The video chroma format |
Stream element for type private¶
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| type | 1 | 1.0 | String | “private” | The elementary stream type |
| id | 1 | 1.0 | String | The id tag of the decode stream | |
| pid | 1 | 1.0 | Integer | 0..8191 | The elementary stream PID |
Example for decode service
Accept: application/json
Content-Type: application/json
"processings": {
"decode": {
"programNumber": 6940,
"programAutoSelected": true,
"descramblingState": "clear",
"streams": [{
"type": "audio",
"id": "Audio_1",
"pid": 5402,
"language": "NAR",
"channelMode": "stereo",
"samplingRate": 48000,
"codec": "mpeg1lII",
"channelCount": 2,
"bitRate": 256000
}, {
"type": "video",
"id": "Video_1",
"pid": 5400,
"height": 1080,
"width": 1920,
"interlaced": true,
"frameRateNumerator": 25,
"frameRateDenominator": 1,
"codec": "H.264:High",
"chromaFormat": "4:2:0",
"bitRate": 3197592
}, {
"type": "private",
"id": "Private_1",
"pid": 5403
},{
"type": "audio",
"id": "Audio_2",
"pid": 5401,
"language": "eng",
"channelMode": "stereo",
"samplingRate": 48000,
"codec": "ac3",
"channelCount": 2,
"bitRate": 192000
}]
},
Passthrough Status¶
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| passThroughServices | 1 | 1.0 | Array | List of TS passthrough status objects | |
| passThroughServices[j].id | 1 | 1.0 | String | The id tag of the TS passthrough stream | |
| passThroughServices[j].programNumber | 1 | 1.0 | Integer | 0..65535 | TS passthrough service program number |
| passThroughServices[j].descramblingState | 1 | 1.0 | String | Descrambling State | The descrambling status |
Example for passthrough service
Accept: application/json
Content-Type: application/json
"processings": {
"passThroughServices": [
{
"id": "Decrypt_1",
"programNumber": 6941,
"descramblingState": "clear"
},
{
"id": "Decrypt_2",
"programNumber": 6940,
"descramblingState": "clear"
}
]
},
Output¶
The service outputs lists the outputs that are of type SDI Output, SMPTE ST 2110 output or Passthrough Output
SDI Output¶
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| type | 1 | 1.0 | String | “sdiOutput” | The output type for SDI |
| id | 1 | 1.0 | String | The id tag for the output | |
| remoteProductionMasterSlaveStatus | 1 | 1.0 | String | Present only if SDI clockReference is “RemoteProduction” Remote Production Master Slave Status | The remote production master slave status |
SMPTE ST 2110 output¶
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| type | 1 | 1.0 | String | “smpte2110Output” | The output type for SMPTE ST 2110 |
| id | 1 | 1.0 | String | The id tag for the output | |
| essences | 1 | 1.0 | Array | Unique ID | Identifier of this object |
| essences[j] | 1 | 1.0 | Object | SMPTE ST2110 Essence | Identifier of this object |
SMPTE ST2110 Essence¶
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| type[j] | 1 | 1.0 | String | “st211020”, “st211030” or “st211040” | SMPTE-ST2110 Essence Type |
| sources[j].sourcePort | 1 | 1.0 | Integer | 0..65535 | Essence source port used for the SMPTE ST 2110 output |
Passthrough Output¶
| Element name | Cardinality | Version added | Type | Constraint | Description |
|---|---|---|---|---|---|
| type | 1 | 1.0 | String | “sdiOutput” | The output type for SDI |
| id | 1 | 1.0 | String | Id tag of output | |
| multicasts | 1 | 1.0 | Array | List of multicast output status objects | |
| multicasts[j].id | 1 | 1.0 | String | Multicast output id tag | |
| multicasts[j].udpOutputPacketCount | 1 | 1.0 | Integer | Count of output UDP packets |
Example
Accept: application/json
Content-Type: application/json
"outputs": [{
"type": "sdiOutput",
"id": "sdiOutput_1",
"remoteProductionMasterSlaveStatus": "Master"
},{
"type": "smpte2110Output",
"id": "smpte2110Output_1",
"essences": [{
"sources": [{
"sourcePort": 1214
}],
"type": "st211020"
},{
"sources": [{
"sourcePort": 1215
}],
"type": "st211030"
}, {
"sources": [{
"sourcePort": 1216
}],
"type": "st211040"
}]
}],
Descrambling State¶
| Value | Description |
|---|---|
| “clear” | the service is not scrambled |
| “scrambled” | the service is scrambled |
| “descrambled” | the service is scrambled and successfully being descrambled |
| “unknown” | the service descrambling is not determined |
Chroma Format¶
| Value | Description |
|---|---|
| “4:2:0” | Chroma is sub-sampled with half the horizontal and half the vertical resolution of luma samples |
| “4:2:2” | Chroma is sub-sampled with half the horizontal resolution of luma samples |
| “4:4:4” | Chroma and luma samples have the same horizontal and vertical resolution |
Remote Production Master Slave Status¶
| Value | Description |
|---|---|
| “Initial” | the clock master negotiation has not started |
| “Negotiating” | the clock master negotiation has started but not completed |
| “Master” | the clock master negotiation has started completed and the unit is the master |
| “Slave” | the clock master negotiation has started completed and the unit is a slaver |
| “Unknown” | the clock master slave status is unknown |
SMPTE-ST2110 Essence Type¶
| Value | Description |
|---|---|
| “st211020” | Uncompressed video transport |
| “st211030” | Audio transport |
| “st211040” | Ancillary data transport |
Clock Status¶
| Field | Version added | Type | Constraint | Description |
|---|---|---|---|---|
| timeMode | 1.0 | String | “Free run”, “TDT”, “PTP” or “NTP” | The current time mode |
| timeServiceId | 1.0 | String | Present only if timeMode is “TDT” | The service ID of the service providing TDT timestamps |
| lockStatus | 1.0 | Boolean | Present only if timeMode is “TDT”, “PTP” or “NTP” | True if system clock is locked to a reference clock |
| gmIdentity | 1.0 | String or null | Present only if timeMode is “PTP” | PTP grandmaster identity |
| gmPresent | 1.0 | String | Present only if timeMode is “PTP” | True if a PTP grandmaster is present |
| domainNumber | 1.0 | String | Present only if timeMode is “PTP” | PTP domain number |
| interface | 1.0 | String | Present only if timeMode is “PTP” | Network interface used for PTP clock source |
PCIe Slot Information¶
| Field | Version added | Type | Constraint | Description |
|---|---|---|---|---|
| description | 1.0 | String | Summary of the card functionality. | |
| marketingCode | 1.0 | String | Order reference. eg. “MKP/HWO/PCI/NIC/25GDUAL” | |
| partNumber | 1.0 | String | Engineering reference. | |
| thirdPartyPartNumber | 1.0 | String | Third party reference. |
Release notes¶
Release note version 5.0¶
- Status API version released is 1.0
- Configuration API version released is 1.52
Release note version 4.0¶
- API version released is 1.52
Release note version 3.0¶
- API version released is 1.45
Release note version 2.0¶
- API version released is 1.32
Release note version 1.0¶
- First version of API for Content processor is released.
- API version released is 1.21